import pandas as pd
from datetime import datetime

from rectify.error1 import get_age_from_idcard


def error4(df, styles_df, column1, column2, column3, column4, column5):
    """
    在Excel文件中的指定列下，比较每一行的两个单元格中的数据，如果不符合规则，则把这两个单元格标红。

    :param df: 原始数据 DataFrame
    :param styles_df: 样式 DataFrame，用于设置 Excel 格式
    :param column1: 空腹血糖(mmol/L)
    :param column2: 此次随访分类
    :param column3: 收缩压(mmHg)
    :param column4: 舒张压(mmHg)
    :param column5: 身份证号
    """
    try:
        # 比较规则函数
        def highlight_if_not_correct(row):
            # 获取空腹血糖和随访分类
            fasting_blood_sugar = float(row[column1])
            follow_up_category = row[column2]

            systolic = row[column3]  # 收缩压
            diastolic = row[column4]  # 舒张压

            idcard = row[column5].strip()

            # 根据身份证号获取年龄
            age = get_age_from_idcard(idcard)
            print("idcard：", idcard)
            print("年龄：", age)
            print("收缩压：", systolic)
            print("舒张压：", diastolic)
            print("fasting_blood_sugar：", fasting_blood_sugar)
            print("follow_up_category：", follow_up_category)
            # 根据年龄判断血压控制标准
            # if age < 65:
            #     if not (systolic < 140 and diastolic < 90 and fasting_blood_sugar < 7.0):
            #         if follow_up_category == "控制满意":
            #             # 不符合规则，标红
            #             styles_df.loc[row.name, [column2, column3, column4]] = 'background-color: red'
            # else:
            #     if not (systolic < 150 and diastolic < 90 and fasting_blood_sugar < 7.0):
            #         if follow_up_category == "控制满意":
            #             # 不符合规则，标红
            #             styles_df.loc[row.name, [column2, column3, column4]] = 'background-color: red'

            if age < 65:
                if not (systolic < 140 and diastolic < 90):
                    if follow_up_category == "控制满意":
                        # 不符合规则，标红
                        styles_df.loc[row.name, [column2, column3, column4]] = 'background-color: red'
            else:
                if not (systolic < 150 and diastolic < 90):
                    if follow_up_category == "控制满意":
                        # 不符合规则，标红
                        styles_df.loc[row.name, [column2, column3, column4]] = 'background-color: red'

            # 根据年龄判断血糖控制标准
            if age < 65:
                if not (fasting_blood_sugar < 7.0):
                    if follow_up_category == "控制满意":
                        # 不符合规则，标红
                        styles_df.loc[row.name, [column1, column2]] = 'background-color: red'
            else:
                if not (fasting_blood_sugar < 7.0):
                    if follow_up_category == "控制满意":
                        # 不符合规则，标红
                        styles_df.loc[row.name, [column1, column2]] = 'background-color: red'

            return [''] * len(row)

        # 应用样式
        df.apply(highlight_if_not_correct, axis=1)
        print("[血糖]已完成处理。")

    except Exception as e:
        print(f"血糖处理时发生错误：{e}")
